#include <stdio.h>
int main()
{
    int n = 9;
    //00000000000000000000000000001001
    float* pfloat = (float*)&n;

    printf("n的值为:%d\n", n);//正常打印
    printf("*pfloat的值为:%f\n", *pfloat);
    //pfloat将n的值理解为三个部分
    //0 00000000 00000000000000000001001
    //是一个极小的浮点数，小数点后前六位都是0
    *pfloat = 9.0;//1001->1.001//只存储小数部分->00100000000000000000000
    //0 10000010 00100000000000000000000
    printf("n的值为:%d\n", n);
    //把这串二进制序列理解为整形的话就是一个很大的数
    printf("*pfloat的值为:%f\n", *pfloat);//正常打印
    return 0;
}

//浮点数可以表示为-1^S*M*2^E
//float占四个字节，32个比特位，第一位为符号位S，接着八位为E（中间值为127），最后23位为M
//double占八个字节，64个比特位，第一位为符号位S，接着十一位为E（中间值为1023），最后52位为M
//E全为零表示极小的数，一般就认为该浮点数是零
//E全为1表示极大的数
//一般情况下还原E的方式是用其储存值减去中间值